문제

영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.

제한사항

  • 1 ≤ str의 길이 ≤ 20
  • str은 알파벳으로 이루어진 문자열입니다.

입출력 예

입력 #1

aBcDeFg

출력 #1

AbCdEfG

코드

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = [];

rl.on('line', function (line) {
  // (1)
  input = [line];
}).on('close', function () {
  // (1)
  str = input[0];
  // (2)
  result = [];
  // (3)
  const nStr = [...str];
  // (4)
  nStr.map((a) => {
    // (5)
    if (a === a.toUpperCase()) {
      result.push(a.toLowerCase());
    } else {
      // (6)
      result.push(a.toUpperCase());
    }
  });
  // (7)
  console.log(result.join(''));
});

코드 해설

입력 부분

(1) 한줄씩 입력 받은 후 line에 값이 저장되며, input 배열에 line을 저장한다.

출력 부분

(1) 변수 str에 input 0번째 인덱스를 저장한다.

(2) 빈 배열을 만들어 result에 저장한다.

(3) str 배열을 구조분해할당으로 분해

(4) str 배열을 map을 돌린다.

(5) a의 값의 문자가 모두 대문자일 경우에 대문자는 소문자로 변환해 result 배열에 저장한다.

(6) a의 값의 문자가 모두 소문자일 경우에 소문자는 대문자로 변환해 result 배열에 저장한다.

(7) 변환된 글자들이 str배열에 저장 되어 있고, join(”)를 이용해 각 인덱스에 저장된 글자를 이어 붙힌 뒤 출력한다.